'use strict';

const BaseService = require('../../libs/base/BaseService');
const MongoDBServer = require('./MongoDBServer');
const MongodbDataInit = require('./initMongodbData');
/**
 * MongoDB服务，提供MongoDB数据库操作
 */
class MongoDB extends BaseService {
  /**
   * 构造函数
   */
  constructor() {
    super('MongoDB');
    this.mongodbServer = new MongoDBServer();
    this.dataInit = new MongodbDataInit(this.mongodbServer);
  }

  /**
   * 初始化服务
   */
  async init() {
    await this.mongodbServer.init();
    await this.dataInit.init();
  }

  /**
   * 查找最近的商家
   * @param {number} longitude 经度
   * @param {number} latitude 纬度
   * @param {number} maxDistance 最大距离（米）
   * @param {number} limit 返回数量限制
   * @param {object} [filters] 额外的过滤条件
   * @param {object} [options] 查询选项
   * @returns {Promise<Array>} 商家列表
   */
  async findNearbyStores(longitude, latitude, maxDistance = 5000, limit = 30, filters = {}, options = {}) {
    const arr = await this.mongodbServer.findNearbyStores(longitude, latitude, maxDistance, limit, filters, options);
    return arr;
  }
}

module.exports = MongoDB;